
module(...,package.seeall)


function make_sandbox(values)
   values = values or {}
   local returned_value = nil
   
   local function add_values(symbol_table)
      for symbol, value in pairs(symbol_table) do
         values[symbol] = value
      end
   end
   
   local function do_lua(lua)
      f,e = loadstring(lua)
      if e then
         error("sputnik.luaenv: "..e)
      end
      if f then 
         setfenv(f, values)
         returned_value = f()
         values = getfenv(f)
      end
   end
   return {
      values = values,
      add_values = add_values,
      do_lua = do_lua
   }
end

--local sandbox = make_sandbox{x=1}
--sandbox.add_values{y=2}
--sandbox.do_lua("z = x + y")
--print(sandbox.values.z)


